/*
 * Copyright 2008-2023 dexian.vip. All rights reserved.
 * Support: http://www.dexian.vip
 * License: http://www.dexian.vip/license
 */

package vip.dexian.code.template.enums;

import vip.dexian.code.generator.Config;

/**
 * 模板枚举。 存放模板的位置和key
 *
 * @author 挺好的 2023年06月06日 13:36
 */
public enum TemplateEnum {

    /**
     * Dao生成
     */
    DAO("Dao"),

    /**
     * Dao实现类
     */
    DAO_IMPL("DaoImpl"),

    /**
     * 实体图
     */
    GRAPH("Graph"),

    /**
     * DTO
     */
    DTO("DTO"),

    /**
     * DTO Mapper
     */
    DTO_MAPPER("DTOAssembler"),

    /**
     * Service
     */
    SERVICE("Service"),

    /**
     * service实现
     */
    SERVICE_IMPL("ServiceImpl"),

    /**
     * 保存表单
     */
    SAVE_FORM("SaveCommand"),

    /**
     * 更新表单
     */
    UPDATE_FORM("UpdateCommand"),

    /**
     * 分页搜索表单
     */
    PAGE_FORM("PageSearcher"),

    /**
     * 列表搜索表单
     */
    LIST_FORM("ListSearcher"),

    /**
     * 更新 表单数据映射Mapper
     */
    SAVE_MAPPER("CommandAssembler"),

    /**
     * 更新 表单数据映射Mapper
     */
    UPDATE_MAPPER("CommandAssembler"),

    /**
     * 控制器
     */
    CONTROLLER("Controller"),
    /**
     * SQL语句
     */
    SQL("Sql");

    /**
     * 模板的后缀
     */
    private static final String TEMPLATE_SUFFIX = ".ftl";

    /**
     * java文件的后缀
     */
    private static final String JAVA_SUFFIX = ".java";

    TemplateEnum (String name) {
        this(name, JAVA_SUFFIX);
    }

    TemplateEnum (String name, String suffix) {
        this.name         = name;
        this.suffix       = suffix;
        this.absolutePath = Config.BASE_PATH + name + TEMPLATE_SUFFIX;
    }

    /**
     * 模板的名称。 默认同key
     */
    private String name;

    /**
     * 模板的绝对路径
     */
    private String absolutePath;

    /**
     * 生成文件的后缀
     */
    private String suffix;

    /**
     * 模板名称
     *
     * @return
     */
    public String getName () {
        return this.name;
    }

    /**
     * 模板绝对路径
     *
     * @return
     */
    public String getAbsolutePath () {
        return this.absolutePath;
    }

    /**
     * 生成的文件后缀
     *
     * @return
     */
    public String getSuffix () {
        return this.suffix;
    }
}
